想像一個演算法,不是一串程式碼,而是一份獨立於任何程式語言的問題解決藍圖。它是邏輯的橋樑,將原始資料(輸入)透過一系列精確且有限的步驟,細心雕琢成期望的結果(輸出)。這個過程本質上是確定性的——代表每一步都可預測——且具有普遍性,旨在解決整個類別的問題,而非單一偶然的個例。
演算法邏輯的結構
在離散數學中,我們將演算法定義為解決特定問題的逐步方法。為了區分簡單的「待辦清單」與正式的數學演算法,我們主要尋找兩個核心特徵:
- 偽代碼: 高階、人類可讀的邏輯描述。它忽略語法(如分號),專注於流程。
- 追蹤記錄: 對演算法狀態的手動日誌記錄。我們會在每一步記錄每個變數的值,以驗證邏輯是否正確。
七項定義特性
1. 輸入: 演算法接收外部資料進行處理。
2. 輸出: 演算法產生一個結果或解答。
3. 精確性: 每一條指令都清晰且無歧義。
4. 確定性: 中間結果是唯一的,且僅取決於輸入和先前的步驟。
5. 有限性: 該過程保證在有限步數後停止。
6. 正確性: 所產生的輸出確實解決了預期的問題。
7. 普遍性: 此方法能適用於廣泛的潛在輸入。
數學基礎:可整除性
許多演算法依賴數論運作。例如,奇偶性檢查(奇數/偶數)或質數驗證,都使用可整除性的定義:
我們說一個整數 $d$ 可整除 $n$(記作 $d|n$),若存在一個整數 $k$,使得 $n = dk$。
這種核心邏輯讓演算法能根據數值關係進行分支判斷,例如使用盧恩演算法識別信用卡號碼中的校驗位。
🎯 核心原則
演算法是邏輯的正式化。它必須是有限的、確定的且正確的。如果它會無限循環或產生模糊結果,那只是程序,而非正式的演算法。